﻿/**
 * Proyecto: Cognitum
 * Global IT Services 2008
 * @author
 */
Cognitum.Polizas.Siniestro.Auto.Editor = Ext.extend(Cognitum.Polizas.Siniestro.Editor, {

    initComponent: function(){
        Ext.apply(this, {
            sections: [{
                xtype: 'sinaut.ctls.gral',
                title: 'General'
            }, {
                title: 'Bitacora',
                items: [{
                    hideLabel: true,
                    name: 'BitacoraSiniestro',
                    xtype: 'ag.list',
                    entityName: 'BitacoraSiniestro',
                    context: 'b.Siniestro.Id=?',
                    anchor: '99% 99%',
                    poliza: this.value
                }]
            }, {
                xtype: 'sinaut.edtr.reparacion',
                title: 'Reparacion de Vehiculo'
            }, {
                xtype: 'sinaut.edtr.asesoria',
                title: 'Asesoria Legal'
            }, {
                xtype: 'sinaut.edtr.tramite',
                title: 'Tramites en Aseguradora'
            }, {
                xtype: 'sinaut.edtr.mensajeria',
                title: 'Apoyo en Mensajeria'
            }, {
                xtype: 'sinaut.edtr.documentacion',
                title: 'Documentacion'
            },{
                title: 'Documentos',
                items: [{
                    fieldLabel: 'Documentos',
                    hideLabel: true,
                    name: 'Documentos',
                    entityName: 'DocumentoDigitalizadoSiniestro',
                    xtype: 'ag.list',
                    context: 'd.Siniestro.Id=?',
                    anchor: '99% 99%'
                    }]
            }, {
                xtype: 'aud.editor',
                title: 'Auditoria'
            }]
        });
        
        Cognitum.Polizas.Siniestro.Auto.Editor.superclass.initComponent.apply(this, arguments);
    },
    
    validateValue: function(value, operation){
        if (PLOG.isDebugEnabled()) {
            PLOG.debug('[Siniestro.Auto.Editor.validateValue] <-');
        }

        //General
        if (!this.validaCampos(null, [value.Numero, value.TipoSiniestroAuto, value.Conductor, value.ContactoSiniestro, value.Poliza, value.BienAsegurado],
            ['Numero', 'TipoSiniestroAuto', 'Conductor', 'ContactoSiniestro', 'Poliza', 'BienAsegurado'])) {
            return false;
        }
        
        // ReparacionVehiculo
        if (value.ReparacionVehiculo) {
            var rt = value.ReparacionVehiculo;
            if (this.seccionVacia(rt)) {
                delete value.ReparacionVehiculo;
            }
            else {
                if (!this.validaCampos('ReparacionVehiculo', [rt.Taller, rt.TipoTaller, rt.OrdenServicio, rt.FechaIngreso, rt.FechaPromesaEntrega, rt.NumeroTelefonico], ['Taller', 'TipoTaller', 'OrdenServicio', 'FechaIngreso', 'FechaPromesaEntrega', 'NumeroTelefonico'])) {
                    return false;
                }
            }
        }
        // TramiteAseguradora
        if (value.TramiteAdmin) {
            var ta = value.TramiteAdmin;
            if (this.seccionVacia(ta)) {
                delete value.TramiteAdmin;
            }
            else {
                if (!this.validaCampos('TramiteAdmin', [ta.FechaInicio, ta.FechaConclusion, ta.Descripcion], ['FechaInicio', 'FechaConclusion', 'Descripcion'])) {
                    return false;
                }
            }
        }
        // AsesoriaLegal
        if (value.AsesoriaLegal) {
            if (this.seccionVacia(value.AsesoriaLegal)) {
                delete value.AsesoriaLegal;
            }
        }
        // ApoyoMensajeria
        if (value.ApoyoMensajeria) {
            if (this.seccionVacia(value.ApoyoMensajeria)) {
                delete value.ApoyoMensajeria;
            }
            else {
				PLOG.debug('[SiniestrosAuto.Editor.validateValue] Apoyo Mensajeria.FechaEntrega: [' + Ext.isEmpty(value.ApoyoMensajeria.FechaEntrega) + ']');
				if (!this.validaCampos('ApoyoMensajeria', [value.ApoyoMensajeria.FechaEntrega, value.ApoyoMensajeria.ContactoEntrega], ['FechaEntrega', 'ContactoEntrega'])) {
                    return false;
                }
            }
        }
        // Documentacion
        if (value.Documentacion) {
            var doc = value.Documentacion;
            if (Ext.isEmpty(doc.DoctosFaltantes)) {
                delete value.Documentacion;
            }
            else {
                if (!this.validaCampos('Documentacion', [doc.DoctosFaltantes], ['DoctosFaltantes'])) {
                    return false;
                }
            }
        }
        return true;
    },
    
    seccionVacia: function(seccion){
		var flag = true;
        for (property in seccion) {
            if (!Ext.isEmpty(seccion[property])) {
                flag = false;
            }
        }
		return flag;
    },
    
    validaCampos: function(propertyName, campos, propiedades){
        var flag = true;
        Ext.each(campos, function(campo, index){
            if (Ext.isEmpty(campo)) {
                flag = false;
                if (!Ext.isEmpty(propertyName))
                    this.getForm().findField(propertyName + '.' + 
					    propiedades[index]).markInvalid('El campo ' + propiedades[index] +
					    ' es mandatorio.');
				else
				    this.getForm().findField(propiedades[index]).markInvalid('El campo ' + propiedades[index] +
					    ' es mandatorio.');
            }
        }, this);
        return flag;
    }        
    
});

Ext.reg('sinaut.editor', Cognitum.Polizas.Siniestro.Auto.Editor);
